package ControlLayer;
import ModelLayer.*;
import java.util.ArrayList;
//model layer package has to be imported
/**
 * Controller class for the DVD collection
 * 
 * @author (kbh) 
 * @version (2005.03.31)
 * @revised version English (Ab)
 * (FEN): 2006.03.21: Some changes to the architecture in order to assure layering
 *                    and loose coupling
 */
public class DVDCtr
{
    private DVDContainer DVDCont;
    //declare instance variables to reference containers
    //passed as arguments from the main class

    /**
     * Constructor for objects of class DVDCtr
     */
    public DVDCtr()//DVD container is to be passed as parameter from the main controller
    {
        DVDCont = DVDCont.getSingleton();
        //set up references to containers    
    }
    
    //Dummy implementation: after implementing the model layer 
    //objects of class DVD are to be returned, not String
    public DVD findDVD(int no)
    {
        //this method is to search the container for a DVD
        //with an id-number equal to the parameter no
        //when the dvd is found, the method is to call print-methods in the TUI layer
        return DVDCont.findDVD(no);
    }
    
    //Dummy implementation: more parameters are probaly to added
    public void createDVD(int id, String title, String artist, String releaseDate)
    {
        DVD dvd = new DVD(id, title, artist, releaseDate);
        DVDCont.createDVD(dvd);
        //this method constructs a new dvd object 
        //and stores it in the container
    }
    
    public void removeDVD(int id)
    {
        DVDCont.deleteDVD(id);
        //search for the dvd and delete the object from the container
    }
    
    public void createCopy(int dvdId, int serialNr, String buyDate, String buyPrice)
    {
        int index = 0;
        boolean found = false;
        Specimen specimen = new Specimen(serialNr, buyDate, buyPrice);
        while(index < DVDCont.DVDContainer.size() && !found)
        {
            if(DVDCont.DVDContainer.get(index).getId() == dvdId)
            {
                found = true;
                DVDCont.DVDContainer.get(index).createCopy(specimen);
            }
            else
            {
                index++;
            }
        }
    }
    
    public Specimen getSpecimen(int dvdId, int specimenId)
    {
        return DVDCont.getSpecimen(dvdId, specimenId);
    }
    
    
    public ArrayList listAllDvds()
    {
          //returns a list of all dvds and their associated copies
          return null;
    }
}